//
//  TLTableViewCell.h
//  PiyingkeLibrary
//
//  Created by Tianlong on 2017/7/26.
//
//

#import <UIKit/UIKit.h>


typedef NS_ENUM(NSInteger, TLTableViewCellStyle) {
    TLTableViewCellStyleDefault,	// Simple cell with text label and optional image view (behavior of UITableViewCell in iPhoneOS 2.x)
    TLTableViewCellStyleValue1,		// Left aligned label on left and right aligned label on right with blue text (Used in Settings)
    TLTableViewCellStyleValue2,		// Right aligned label on left with blue text and left aligned label on right (Used in Phone/Contacts)
    TLTableViewCellStyleSubtitle,	// Left aligned label on top and left aligned label on bottom with gray text (Used in iPod).
    TLTableViewCellStyleUnkown
};



@interface TLTableViewCell : UITableViewCell

/**
 传进来的模型，也可以通过set方法进行设置
 */
@property (nonatomic , strong) id model;

/**
 重用标识符
 */
@property (nonatomic , copy) NSString *identifier;

/**
 记录的tableView
 */
@property (nonatomic , strong , readonly) UITableView *tableView;

/**
 通过tableview创建cell

 @param tableView tableView不能为空
 */
+(instancetype)cellWithTableView:(UITableView *)tableView cellStyle:(TLTableViewCellStyle)cellStyle;

/**
 通过tableview，模型来创建cell
 
 @param tableView tableView 不能为空
 @param model 外界传递的模型
 */
+(instancetype)cellWithTableView:(UITableView *)tableView model:(id)model cellStyle:(TLTableViewCellStyle)cellStyle;

/**
 通过tableview，标识符来创建cell
 
 @param tableView tableView 不能为空
 @param reuseIdentifier 外界传递的重用标识符, 可以为nil 和 空字符串
 */
+(instancetype)cellWithTableView:(UITableView *)tableView reuseIdentifier:(NSString *)reuseIdentifier cellStyle:(TLTableViewCellStyle)cellStyle;

/**
 通过tableview，标识符，模型来创建cell
 
 @param tableView tableView 不能为空
 @param model 外界传递的模型
 @param reuseIdentifier 外界传递的重用标识符, 可以为nil 和 空字符串
 */
+(instancetype)cellWithTableView:(UITableView *)tableView model:(id)model reuseIdentifier:(NSString *)reuseIdentifier cellStyle:(TLTableViewCellStyle)cellStyle;

/**
 通过自己的获取原生对应的style
 */
+(UITableViewCellStyle)getTableCellStyleWithTLTableCellStyle:(TLTableViewCellStyle)style;


@end
